home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
8bitfiles.net/archives
/
archives.tar
/
archives
/
compuserve-file-archive
/
05 Programming
/
RS232.ARC
/
MODEM%a4SET.C
< prev
next >
Wrap
Text File
|
2019-04-13
|
3KB
|
158 lines
/*
MODEMñSET.C HARDWARE AND LOW-LEVEL SOFTWARE
SETUP CODE FOR TELECOMUNICATIONS.
*/
#INCLUDE <STDIO.H>
#INCLUDE <DEFN.H>
#INCLUDE <TERM.H>
EXTERN UNSIGNED PAUSE();
EXTERN CHAR ╟ET╦EY();
/*
DIAL() DIAL A SINGLE DIGIT 0..9
*/
DIAL(NUM)
UNSIGNED NUM;
█
UNSIGNED REP;
FOR(REP=0;REP<NUM;REP++)
█
ONñHOOK();
PAUSE(╙╔╪╘┘);
OFFñHOOK();
PAUSE(╞╧╒╥╘┘);
▌
PAUSE(╙╚╧╥╘);
PAUSE(╠╧╬╟);
▌
/*
ONñHOOK()
*/
ONñHOOK()
█
POKE(0X0F,0XDD01,(PEEK(0X0F,0XDD01)▀0X20));
▌
/*
OFFñHOOK()
*/
OFFñHOOK()
█
POKE(0X0F,0XDD03,(PEEK(0X0F,0XDD03)▀0X20));
POKE(0X0F,0XDD01,(PEEK(0X0F,0XDD01)&0XDF));
▌
/*
═ñFLUSH() CLEAR THE RS-232 ╔NPUT/╧UTPUT BUFFERS IN ┬ANK0
TO ALL ┌ERO'S (0).
*/
ͤFLUSH()
█
UNSIGNED POS,BASE;
BASE = 0X0C00;
FOR(POS=0;POS<512;POS++)
POKE(0X0F,BASE+POS,0X00);
POKE(0X0F,0X0A18,00);POKE(0X0F,0X0A19,00); /* SET RS-232 BUFFER-POINTERS */
POKE(0X0F,0X0A1A,00);POKE(0X0F,0X0A1B,00); /* TO SHOW EMPTY BUFFERS */
▌
/*
ADJUST() MODIFY BAUD-RATES
*/
ADJUST(RATE)
CHAR RATE;
█
CHAR COMMAND,
CONTROL,
╚IGHñ┬YTE,
╠OWñ┬YTE,
CH;
FLOAT ┬AUD,SYSñ├LOCK;
SYSñ├LOCK = 1.02273E6;
CONTROL = 0;
COMMAND = 0;
ͤFLUSH();
IF (RATE ╔╙ñ┼╤╒┴╠ '3')
█
═Oñ╧PEN( 6,0,0,0 ); /* 300 BAUD 1 STOP 8-BITS FULL DUPLEX NO PARITY*/
▌
ELSE
█
═Oñ╧PEN( 8,0,0,0 ); /* 1200 BAUD SAME AS ABOVE ^ */
▌
PUTC(147);
PUTS("\N\N ┬AUD ╥ATE ┴DJUSTMENT...");
PUTS(" ╒SE ╞1 TO INCREASE BAUD OR ╞3 TO DECRESE IT");
PUTS(" OR ┼╙├ TO CONTINUE...\N\N\N");
PUTS(" ╨RESS ╙╨┴├┼...\N");
WHILE( (CH=╟ET╦EY()) ╬╧╘ñ┼╤╒┴╠ ┼╙├)
█
╠OWñ┬YTE = PEEK(0X0F,0X0A12);
╚IGHñ┬YTE = PEEK(0X0F,0X0A13);
SWITCH(CH)
█
CASE ╞3: IF (╠OWñ┬YTE <255)
╠OWñ┬YTE++;
ELSE
█
IF (╚IGHñ┬YTE <255)
█
╠OWñ┬YTE =0;
╚IGHñ┬YTE++;
▌
ELSE
█
╚IGHñ┬YTE =0;
╠OWñ┬YTE =0;
▌
▌ ; BREAK;
CASE ╞1: IF (╠OWñ┬YTE >0)
╠OWñ┬YTE--;
ELSE
█
IF (╚IGHñ┬YTE >0)
█
╠OWñ┬YTE =0;
╚IGHñ┬YTE--;
▌
ELSE
█
╚IGHñ┬YTE =256;
╠OWñ┬YTE =256;
▌
▌ ; BREAK;
▌
┬AUD = SYSñ├LOCK / ( 2 * (╚IGHñ┬YTE * 256 + ╠OWñ┬YTE + 100));
PRINTF(" ┬AUD ╥ATE IS: %04.6F \N%C",┬AUD,145);
POKE(0X0F,0X0A12,╠OWñ┬YTE);
POKE(0X0F,0X0A13,╚IGHñ┬YTE);
▌
▌